SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TCMOVI_BANC_Q02]
/*-------------------------------------------------------*/
/*---Empresa               OFISIS S.A.                --*/
/*---Cliente               SANTILLANA                 --*/
/*---Sistema               Tesoreria                  --*/
/*---M«dulo                Empresa                    --*/
/*---Programa              FLUJO DE CAJA RESUMIDO     --*/
/*---Script                SP_TCMOVI_BANC_Q02.sql     --*/
/*---Nombre SP             SP_TCMOVI_BANC_Q02         --*/
/*---Desarrollado por      Reynaldo Menacho Luyo      --*/
/*---Fecha Creaci«n        25/09/2001                 --*/
/*---Base Datos            SQL SERVER		      --*/
/*---Versi«n               2000                       --*/
/*---Invoca a SP                                      --*/
/*-------------------------------------------------------*/

/*-------------------------------------------------------*/
/*---Modificado 1 por     					 --*/
/*---Fecha Modificaci«n   					 --*/ 
/*---Detalle Modificaci«n 					 --*/
/*-------------------------------------------------------*/

/*-------------------------------------------------------*/
/*---Drop Proc SP_TCMOVI_BANC_Q02                      --*/
/*---Grant all on SP_TCMOVI_BANC_Q02 to public         --*/ 
/*---SP_TCMOVI_BANC_Q02 '01', '2001/08/31', 'SOL'      --*/
/*-------------------------------------------------------*/

@ISCA_WHER_0001	Varchar(256),
@ISCA_WHER_0002	Varchar(256),
@IDFE_REPO	TD_DT_001,
@ISCO_MONE	TD_VC_003

AS	

CREATE TABLE #TWFLUJ_CAJA_Q01_1
 ( CO_EMPR      varchar(3) NULL,
   CO_ARUB	varchar(3) NULL ,
   CO_RUBR	varchar(3) NULL ,
   CO_SUBR	varchar(3) NULL ,
   IM_SALD_ANTE	numeric(16,4) DEFAULT 0,
   IM_MOVI_ACTU	numeric(16,4) DEFAULT 0,
   IM_SALD_MESE	numeric(16,4) DEFAULT 0 )

CREATE TABLE #TWFLUJ_CAJA_Q01_2
 ( CO_EMPR      varchar(3) NULL,
   CO_ARUB	varchar(3) NULL ,
   CO_RUBR	varchar(3) NULL ,
   CO_SUBR	varchar(3) NULL ,
   FE_OPER	datetime NULL,
   FA_TIPO_CAMB numeric(9,4) DEFAULT 0,
   CO_MONE	varchar(3) NULL ,
   IM_MOVI	numeric(16,4) DEFAULT 0,
   TI_DETA	char(1) NULL )


EXECUTE('
	INSERT INTO #TWFLUJ_CAJA_Q01_2
	(CO_EMPR, CO_ARUB, CO_RUBR, CO_SUBR, FE_OPER, FA_TIPO_CAMB, CO_MONE, IM_MOVI, TI_DETA)
	SELECT T1.CO_EMPR, TTARUB_FINA.CO_ARUB, TTRUBR_FINA.CO_RUBR, TTSUBR_FINA.CO_SUBR, T1.FE_OPER, T1.FA_TIPO_CAMB, T5.CO_MONE,
	Round( (SELECT Dbo.FN_TCFACT_CAMB_Q02(T5.CO_MONE, "' + @ISCO_MONE + '", T1.FE_OPER,
	T1.IM_MOVI * ( PATINDEX(T1.TI_MOVI_BANC, "I") - PATINDEX(T1.TI_MOVI_BANC, "E")), 
	T6.TI_CAMB, T6.TI_ORIG, "S", T6.CO_MONE_DEFA, T6.CO_MONE_EXTR, T1.FA_TIPO_CAMB)), 2), "1"
	FROM TCMOVI_BANC T1, TTSUBR_FINA, TTRUBR_FINA, TTARUB_FINA, TMCNTA_BANC T5, TMPARA_TESO T6, TMEMPR
	' + @ISCA_WHER_0001 + @ISCA_WHER_0002 + '
	AND 	T1.FE_OPER <= "' +  @IDFE_REPO + '"
	AND	T1.TI_SITU = "ACT"
	AND	TTSUBR_FINA.ST_REPO = "S"
	AND 	T1.CO_EMPR = T5.CO_EMPR
	AND 	T1.CO_BANC = T5.CO_BANC
	AND 	T1.NU_CNTA_BANC = T5.NU_CNTA_BANC
	AND	T1.CO_EMPR = TTSUBR_FINA.CO_EMPR
	AND	T1.CO_SUBR = TTSUBR_FINA.CO_SUBR
	AND	TTSUBR_FINA.CO_EMPR = TTRUBR_FINA.CO_EMPR
	AND 	TTSUBR_FINA.CO_ARUB = TTRUBR_FINA.CO_ARUB
	AND 	TTSUBR_FINA.CO_RUBR = TTRUBR_FINA.CO_RUBR
	AND	TTRUBR_FINA.CO_EMPR = TTARUB_FINA.CO_EMPR
	AND	TTRUBR_FINA.CO_ARUB = TTARUB_FINA.CO_ARUB
	AND 	T1.CO_EMPR = T6.CO_EMPR
	AND 	T1.CO_EMPR = TMEMPR.CO_EMPR
	UNION ALL
	SELECT T1.CO_EMPR, TTARUB_FINA.CO_ARUB, TTRUBR_FINA.CO_RUBR, TTSUBR_FINA.CO_SUBR, T1.FE_OPER, T1.FA_TIPO_CAMB, T5.CO_MONE,
	Round( (SELECT Dbo.FN_TCFACT_CAMB_Q02(T5.CO_MONE, "' + @ISCO_MONE + '", T1.FE_OPER,
	T1.IM_MOVI * ( PATINDEX(T1.TI_MOVI, "I") - PATINDEX(T1.TI_MOVI, "E")), 
	T6.TI_CAMB, T6.TI_ORIG, "S", T6.CO_MONE_DEFA, T6.CO_MONE_EXTR, T1.FA_TIPO_CAMB)), 2), "2"
	FROM TCMOVI_CAJA T1, TTSUBR_FINA, TTRUBR_FINA, TTARUB_FINA, TMCAJA T5, TMPARA_TESO T6, TMEMPR
	' + @ISCA_WHER_0001 + @ISCA_WHER_0002 + '
	AND	T1.FE_OPER <= "' +  @IDFE_REPO + '"
	AND	T1.TI_SITU = "ACT"
	AND	TTSUBR_FINA.ST_REPO = "S"
	AND 	T1.CO_EMPR = T5.CO_EMPR
	AND 	T1.CO_CAJA = T5.CO_CAJA
	AND	T1.CO_EMPR = TTSUBR_FINA.CO_EMPR
	AND	T1.CO_SUBR = TTSUBR_FINA.CO_SUBR
	AND	TTSUBR_FINA.CO_EMPR = TTRUBR_FINA.CO_EMPR
	AND 	TTSUBR_FINA.CO_ARUB = TTRUBR_FINA.CO_ARUB
	AND 	TTSUBR_FINA.CO_RUBR = TTRUBR_FINA.CO_RUBR
	AND	TTRUBR_FINA.CO_EMPR = TTARUB_FINA.CO_EMPR
	AND	TTRUBR_FINA.CO_ARUB = TTARUB_FINA.CO_ARUB
	AND 	T1.CO_EMPR = T6.CO_EMPR
	AND 	T1.CO_EMPR = TMEMPR.CO_EMPR
	ORDER BY T1.CO_EMPR, TTARUB_FINA.CO_ARUB, TTRUBR_FINA.CO_RUBR, TTSUBR_FINA.CO_SUBR ')


INSERT INTO #TWFLUJ_CAJA_Q01_1
(CO_EMPR, CO_ARUB, CO_RUBR, CO_SUBR, IM_SALD_ANTE)
SELECT CO_EMPR, CO_ARUB, CO_RUBR, CO_SUBR, SUM(IM_MOVI)
FROM #TWFLUJ_CAJA_Q01_2
WHERE 	MONTH(FE_OPER) < MONTH(@IDFE_REPO)
AND 	YEAR(FE_OPER) = YEAR(@IDFE_REPO)
GROUP BY CO_EMPR, CO_ARUB, CO_RUBR, CO_SUBR

INSERT INTO #TWFLUJ_CAJA_Q01_1
(CO_EMPR, CO_ARUB, CO_RUBR, CO_SUBR, IM_MOVI_ACTU)
SELECT CO_EMPR, CO_ARUB, CO_RUBR, CO_SUBR, SUM(IM_MOVI)
FROM #TWFLUJ_CAJA_Q01_2
WHERE 	FE_OPER = @IDFE_REPO
GROUP BY CO_EMPR, CO_ARUB, CO_RUBR, CO_SUBR

INSERT INTO #TWFLUJ_CAJA_Q01_1
(CO_EMPR, CO_ARUB, CO_RUBR, CO_SUBR, IM_SALD_MESE)
SELECT CO_EMPR, CO_ARUB, CO_RUBR, CO_SUBR, SUM(IM_MOVI)
FROM #TWFLUJ_CAJA_Q01_2
WHERE 	MONTH(FE_OPER) = MONTH(@IDFE_REPO)
AND 	YEAR(FE_OPER) = YEAR(@IDFE_REPO)
AND 	FE_OPER <= @IDFE_REPO
GROUP BY CO_EMPR, CO_ARUB, CO_RUBR, CO_SUBR

SELECT T1.CO_EMPR, MAX(T5.DE_NOMB), T4.CO_ARUB, MAX(T4.DE_ARUB), T3.CO_RUBR, MAX(T3.DE_RUBR),
T2.CO_SUBR, MAX(T2.DE_SUBR), Round(SUM(T1.IM_SALD_ANTE), 2), 
Round(SUM(T1.IM_MOVI_ACTU), 2), Round(SUM(T1.IM_SALD_MESE), 2)
FROM #TWFLUJ_CAJA_Q01_1 T1, TTSUBR_FINA T2, TTRUBR_FINA T3, TTARUB_FINA T4, TMEMPR T5
WHERE 	T1.CO_EMPR = T2.CO_EMPR
AND	T1.CO_SUBR = T2.CO_SUBR
AND  	T1.CO_RUBR = T2.CO_RUBR
AND  	T1.CO_ARUB = T2.CO_ARUB
AND 	T2.ST_REPO = 'S'
AND 	T1.CO_EMPR = T3.CO_EMPR
AND  	T1.CO_RUBR = T3.CO_RUBR
AND  	T1.CO_ARUB = T3.CO_ARUB
AND 	T1.CO_EMPR = T4.CO_EMPR
AND  	T1.CO_ARUB = T4.CO_ARUB
AND	T1.CO_EMPR = T5.CO_EMPR
AND 	EXISTS ( SELECT T6.CO_RUBR
		 FROM 	TTRUBR_FINA T6
		 WHERE 	T6.CO_EMPR = T2.CO_EMPR
		 AND 	T6.CO_ARUB = T2.CO_ARUB
		 AND 	T6.CO_RUBR = T2.CO_RUBR
		 AND 	T6.ST_REPO = 'S'
		 AND EXISTS ( SELECT T7.CO_ARUB
		 	      FROM 	TTARUB_FINA T7
		 	      WHERE 	T7.CO_EMPR = T6.CO_EMPR
		 	      AND 	T7.CO_ARUB = T6.CO_ARUB
		 	      AND 	T7.ST_REPO = 'S'))
GROUP BY T1.CO_EMPR, T4.CO_ARUB, T3.CO_RUBR, T2.CO_SUBR
ORDER BY T1.CO_EMPR, MAX(T4.NU_ORDE), MAX(T3.NU_ORDE), MAX(T2.NU_ORDE)

RETURN
/********************************* FIN ***********************************/


GO
